Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption. Common uses for flash memory include portable computers, personal digital assistants (PDAs), digital cameras, and cellular telephones. Program code, system data such as a basic input/output system (BIOS), and other firmware can typically be stored in flash memory devices. Most electronic devices are designed with a single flash memory device.
Typical flash memory uses a single bit per cell. Each cell is characterized by a specific threshold voltage or Vt level. Electrical charge is stored on the floating gate of each cell. Within each cell, two possible voltage levels exist. These two levels are controlled by the amount of charge that is programmed or stored on the floating gate; if the amount of charge on the floating gate is above a certain reference level, the cell is considered to be in a different state (e.g., programmed, erased).
Multilevel cells have recently been introduced to greatly increase the density of a flash memory device. This technology enables storage of multiple bits per memory cell by charging the floating gate of the transistor to different levels and having multiple thresholds. This technology takes advantage of the analog nature of a traditional flash cell by assigning a bit pattern to a specific voltage range. The quantity of voltage ranges stored on the cell determines the quantity of bits that can be stored on the cell.
With the introduction of multilevel cells, the precision at which the voltages on the device are sensed greatly increases. This increases the chance for a cell to be over-programmed, from which there is no recovery. This is due to the flash device being programmed on a bit basis where the entire block is erased at the same time. To correct a mistake, there would be a requirement to erase the entire block and reprogram the entire block with the old data. Since that data does not exist anywhere except the flash, it makes it very difficult to perform a corrective action to over-programming, thus making the memory device worthless.
Various error correction schemes are typically used to solve such problems. These schemes require additional array bits to store the additional information required for the error correction code. If a memory device is a byte-wide device, four additional bits per byte are required. If the memory device is a sixteen bit wide device, five additional bits are required. This additional error correction memory increases the per bit cost of the device in a technology that is already experiencing low profit margins.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for an improved error correction scheme in a memory device.